A software application as developed for a computing device or the like may at times require installation of one or more components, either as a necessity or as desirable. For example, a media rendering application may require a particular component for the operation thereof, such as for example a graphics decoder, an audio filter, or the like, and/or may optionally include a particular component to allow the rendering application to render a particular content type, such as for example a particular type of video or audio player or the like.
Typically, each of the application and each component thereof is packaged into a separate executable installer such as for example a .exe file or a collection of files accessed by way of a batch file or the like. The process of installing such an application consists of downloading or otherwise locating and running the installer for each prerequisite or requested component, rebooting the machine as necessary, and then downloading or otherwise locating and running the installer for the application.
As should be appreciated, manually performing such a process can be tedious and complicated, especially if a relatively large number of components are to be installed along with the application, and if each component must be located from a different place. Moreover, such process can be complicated by the fact that a component should not be installed if such component is already available at the computing device on which the application is being installed, or if such component is already available at such computing device in a more current version, or if such component is known to conflict with another component on such computing device, among other things.
In the prior art, it is known to employ a packaging tool to produce a package that when executed installs the application and each of one or more components therefor. Such a package or ‘bootstrapper’ thus automates the installation of a multi-component application, and may for example be recognized as a file entitled ‘setup.exe’ or the like. However, prior art installation packages suffer from the fact that they can only install components that are supported by the developer of the packaging tool. In particular, if such packaging tool developer only supports packaging components A, B, and C with an application, an application developer cannot employ such packaging tool to package a component D with an application. Likewise, if such packaging tool developer only supports packaging a particular version of a component E with an application, an application developer cannot employ such packaging tool to package a later version of such component E with an application.
Accordingly, a need exists for a packaging tool that is extensible to support installation of almost any version of any component with an application. In particular, a need exists for a packaging system including the packaging tool and each of a plurality of components, where each component includes therewith all packaging information necessary for the packaging tool to package such component with an application. Thus, such packaging tool can package any such component with an application based on the packaging information for such component as obtained from such component.